package com.android.support.jhf.iphonetreeview;

import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.widget.ExpandableListView;
import android.widget.SectionIndexer;

/**
 * Adapter 接口 . 列表必须实现此接口 ,才能实现group停靠在最上面.
 */
public interface PinnedHeaderAdapter {
	public static final int PINNED_HEADER_GONE = 0;// ExpandableListView的默认状态
	public static final int PINNED_HEADER_VISIBLE = 1;// header停靠在最上面
	public static final int ALL_GROUP_EXPAND_NO_CLICK = 2;// 所有group都展开而且group不能点击,header停靠在最上面

	/**
	 * 获取 Header 的状态
	 * 
	 * @param groupPosition
	 * @param childPosition
	 * @return 
	 *         PINNED_HEADER_GONE,PINNED_HEADER_VISIBLE,ALL_GROUP_EXPAND_NO_CLICK
	 *         其中之一
	 */
	int getPinnedHeaderState(int groupPosition, int childPosition);

	/**
	 * 配置 PinnedHeader, 让PinnedHeader 知道显示的内容
	 * 
	 * @param header
	 * @param groupPosition
	 * @param childPosition
	 * @param alpha
	 */
	void configurePinnedHeader(View header, int groupPosition,
			int childPosition, int alpha);
	
	/**
	 * 返回停靠在最上面的View
	 * @return
	 */
	public View getPinnedHeadView();

	/**
	 * 
	 * 
	 * @param arg0  点击右侧索引的位置
	 * @return  选中列表的位置
	 */
	public int getPositionForSection(int arg0);

	/**
	 * 返回索引的List用来添加右端的指示器
	 * 
	 * @return
	 */
	public Object[] getSections();
	
	/**
	 * 通知List改变,为了使刷新之后还是展开的必须要这么写
	 * 写法：
	 * @Override
	 * public void notifyDataSetChanged(ExpandableListView expandableListView) {
	 *	super.notifyDataSetChanged();
	 *	if (PinnedHeaderAdapter.ALL_GROUP_EXPAND_NO_CLICK == getPinnedHeaderState(0, 0)) {
	 *		for (int i = 0; i < getGroupCount(); i++) {
	 *			expandableListView.expandGroup(i);
	 *		}
	 *	}
	 *}
	 * @param expandableListView
	 */
	public void notifyDataSetChanged(ExpandableListView expandableListView);

}
